<?php

class Config extends Base
{
    private $config;

    public function __construct()
    {
        $this->config=require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'main.php');
    }

    public function __get($name)
    {
        if(!property_exists($this,$name)){
            $model=Sys::app()->loadClass('systemModels/ConfigModel');
            if($result=$model->findByAttributes(array('name'=>$name))){
                if(isset($result->value)){
                    return $this->$name=$result->value;
                }else{
                    return false;
                }
            }else{
               return false;
            }
        }else{
            return false;
        }
    }

    public function getConfig($config=array())
    {
        $result=new self();
        if(!$config){
            $config=$this->config;
            foreach($config['properties'] as $prop=>$val){
                if(!isset($config[$prop])) $result->$prop=$val;
                else Sys::app()->error='Вы назвали одно из свойств приложения ситемным именем "'.$prop.'". Переименуйте его, иначе его будет невозможно использовать.';
            }
            unset($config['properties']);
        }
        foreach($config as $name=>$value){
            if($value){
                if(is_array($value)) $result->$name=$this->getConfig($value);
                else $result->$name=$value;
            }else{
                $result->$name=false;
            }
        }
        return $result;
    }
}